// pages/booklist/booklist.js
const app = getApp();
const db = wx.cloud.database();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    bookList: [],
    noData:false,
  },
  goBookdetail(e){
    let {id,title} = e.currentTarget.dataset
    wx.navigateTo({
      url: `/pages/bookdetail/bookdetail?id=${id}&title=${title}`,
    })
  },
  //查找数据
  searchBookList:function (params) {
    return db.collection('booklist').where(params).get().then(res => {
      wx.hideLoading()
      return res.data;
    }).catch(err => {
      wx.hideLoading()
      return err
    })
  },
  //请求云数据
  getCloudFn: function (params){
   return wx.cloud.callFunction({
      name: 'booklist',
      data: params,
    }).then(res=>{
      wx.hideLoading()
      return res.result
    }).catch(err=>{
      console.error(err, '--cuowu')
      wx.hideLoading()
    })
  },
  //
  getNoParams: function (params){
    let arr = Object.keys(params).filter(item=> {
      return item!='page'
    })
    return arr.every(item =>{return params[item]>0});
  },
  getAllData:function(){
    return db.collection('booklist').limit(50).get().then(res => {
      wx.hideLoading()
      return res
    }).catch(err=>{
      wx.hideLoading()
      console.error(err)
    })
  },
  //找数据
  getbookList: async function(params){
    var _this = this;
    wx.showLoading({
      title: '加载中。。。'
    });
    let flag =  this.getNoParams(params);
    if (!flag){
      let allData = await this.getAllData()
      this.setData({
        bookList: allData.data,
        noData: false
      })
    }else{
      let cloudData = await this.getCloudFn(params);
      if (cloudData.error_code ==0){
        let data = cloudData.result.list;
        this.setData({
          bookList: data,
          noData: false
        })
        data.forEach( async item=>{
          let serchDataInCloud = await this.searchBookList(item);
          if (serchDataInCloud.id == item.id) {
            console.log(serchDataInCloud, 'zhaodao相同的')
            throw Error();
          } else {
            await this.insetBooklist(item);
          }
        })
      }else{
        this.setData({
          noData: true,
        }) 
      }
    }
  },
  //插入数据
  insetBooklist:function(item) {
    db.collection('booklist').add({
      data: item
    }).then(res => {
      console.log(res, '---已经存到booklist')
      return res
    }).catch(err => {
      throw new Error(err)
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options)
    this.getbookList(options)
    //插入数据
    // this.data.bookList.forEach(async item=>{
    //   await db.collection('booklist').add({ data: item }).then(res => console.log(res)).catch(err => console.error(err))
    // })
    
  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})